Next.js ইমেজ হ্যান্ডলিংয়ের জন্য একটি বিল্ট-ইন next/image কম্পোনেন্ট প্রদান করে, যা ইমেজ অপটিমাইজেশন, রিসাইজিং, এবং রেসপন্সিভ ইমেজ ব্যবস্থাপনার সুবিধা দেয়। এই কম্পোনেন্টটি স্বয়ংক্রিয়ভাবে ইমেজ লোডিং অপটিমাইজ করে এবং মোবাইল এবং ডেস্কটপ ডিভাইসের জন্য যথাযথ সাইজের ইমেজ প্রদর্শন করে। এর ফলে ওয়েবসাইটের লোডিং স্পিড উন্নত হয় এবং SEO-র উন্নতি হয়।
নিচে Next.js-এ Image Resizing এবং Responsive Image Management কিভাবে করা যায়, তা বিস্তারিত আলোচনা করা হলো।
১. Next.js Image কম্পোনেন্ট ব্যবহার করা
Next.js এর next/image কম্পোনেন্ট ইমেজ অপটিমাইজেশন এবং রেসপন্সিভ ইমেজ লোডিং হ্যান্ডল করার জন্য ডিজাইন করা হয়েছে। এই কম্পোনেন্টটি ডিফল্টভাবে ইমেজ রিসাইজিং এবং ল্যাজি লোডিং (Lazy Loading) সাপোর্ট করে।
ইমেজ কম্পোনেন্টের মূল সিনট্যাক্স:
import Image from 'next/image'
function MyComponent() {
return (
<div>
<Image
src="/path/to/image.jpg" // ইমেজ ফাইলের লোকেশন
alt="Image description" // ইমেজের alt টেক্সট
width={500} // ইমেজের প্রস্থ
height={300} // ইমেজের উচ্চতা
/>
</div>
)
}
export default MyComponent;
src: ইমেজের সোর্স পাথ।alt: ইমেজের বর্ণনা, যা SEO এবং অ্যাক্সেসিবিলিটি জন্য জরুরি।widthএবংheight: ইমেজের প্রস্থ এবং উচ্চতা (পিক্সেলস এ)।
Next.js এই তথ্য নিয়ে ইমেজের অপটিমাইজেশন করবে, এবং আপনি যদি প্রয়োজনীয় আকারের ইমেজ নির্দিষ্ট করেন, তবে এটি স্বয়ংক্রিয়ভাবে ইমেজটি সঠিক সাইজে রেন্ডার করবে।
২. Responsive Image Management
Next.js এর next/image কম্পোনেন্টটি ইমেজকে রেসপন্সিভভাবে প্রদর্শন করার জন্য বেশ কিছু অতিরিক্ত বৈশিষ্ট্য সমর্থন করে। sizes এবং srcSet অ্যাট্রিবিউট ব্যবহার করে, আপনি বিভিন্ন ডিসপ্লে ডিভাইসের জন্য বিভিন্ন আকারের ইমেজ নির্ধারণ করতে পারেন।
Responsive Image এর জন্য sizes এবং srcSet:
sizes অ্যাট্রিবিউট ব্যবহার করে আপনি ব্রাউজারের স্ক্রীন সাইজ অনুযায়ী বিভিন্ন ইমেজ সাইজের জন্য নির্দিষ্ট আকার নির্ধারণ করতে পারেন। এটি ক্লায়েন্টের স্ক্রীন রেজোলিউশনের ওপর ভিত্তি করে সঠিক সাইজের ইমেজ লোড করবে।
import Image from 'next/image'
function MyComponent() {
return (
<div>
<Image
src="/path/to/image.jpg"
alt="Responsive Image"
width={1200}
height={800}
sizes="(max-width: 768px) 100vw, 50vw" // স্ক্রীনের সাইজ অনুযায়ী ইমেজ সাইজ নির্বাচন
/>
</div>
)
}
export default MyComponent;
sizes: এখানে আমরাmax-width: 768pxএ স্ক্রীনের প্রস্থ অনুযায়ী ইমেজের আকার নিয়ন্ত্রণ করেছি। যখন স্ক্রীনের প্রস্থ 768px বা তার কম হবে, তখন ইমেজের আকার হবে100vw(স্ক্রীনের প্রস্থ)। যদি স্ক্রীন বড় হয়, তাহলে আকার হবে50vw(স্ক্রীনের অর্ধেক)।
এইভাবে, Next.js স্বয়ংক্রিয়ভাবে ইমেজের সাইজ কাস্টমাইজ করবে, যাতে মোবাইল এবং ডেস্কটপ ডিভাইসে সেরা ব্যবহারকারীর অভিজ্ঞতা পাওয়া যায়।
৩. Image Optimization
Next.js স্বয়ংক্রিয়ভাবে আপনার ইমেজগুলো অপটিমাইজ করে, যাতে সেগুলি দ্রুত লোড হয় এবং SEO উন্নত হয়। এটি ইমেজের সাইজ কমানোর জন্য বিভিন্ন কৌশল প্রয়োগ করে, যেমন:
- Lossless Compression: ইমেজের গুণগত মান বজায় রেখে সাইজ কমানো।
- Lazy Loading: শুধুমাত্র স্ক্রিনে দেখা যাবে এমন ইমেজগুলো লোড করা। অব্যবহৃত ইমেজগুলো স্ক্রোল করার পর লোড হবে।
- Responsive Image Formats: Next.js বিভিন্ন ইমেজ ফরম্যাট (যেমন WebP, AVIF) নির্বাচন করে, যাতে ইমেজের সাইজ এবং গুণমানের মধ্যে সঠিক সমতা বজায় থাকে।
Image Optimization Example:
<Image
src="/path/to/image.jpg"
alt="Optimized Image"
width={1200}
height={800}
/>
এখানে Next.js ইমেজটি এমনভাবে অপটিমাইজ করবে যাতে এটি সাইটের লোডিং স্পিডে কোনো প্রভাব ফেলবে না।
৪. Custom Image Loader (Optional)
Next.js আপনাকে কাস্টম ইমেজ লোডারও ব্যবহার করতে দেয়, যেখানে আপনি নিজস্ব সার্ভার বা সেবা (যেমন Cloudinary, Imgix) থেকে ইমেজ লোড করতে পারেন। এটি সাধারণত আপনি যখন আপনার ইমেজগুলো এক্সটার্নাল সেবা থেকে লোড করতে চান, তখন প্রয়োজন হয়।
next.config.js ফাইলে কাস্টম ইমেজ লোডার কনফিগার করা যায়:
module.exports = {
images: {
loader: 'cloudinary',
path: 'https://res.cloudinary.com/your-cloud-name/image/upload/',
},
}
এখানে, Cloudinary ব্যবহার করে কাস্টম ইমেজ লোডার কনফিগার করা হয়েছে। আপনি অন্যান্য লোডারও ব্যবহার করতে পারেন।
৫. Image Formats
Next.js স্বয়ংক্রিয়ভাবে WebP অথবা AVIF এর মতো আধুনিক ইমেজ ফরম্যাট ব্যবহার করতে পারে, যেগুলো JPEG এবং PNG এর তুলনায় অনেক বেশি কমপ্রেসড এবং দ্রুত লোড হয়।
Next.js ইমেজ ফরম্যাট নির্বাচন এবং কনভার্সন স্বয়ংক্রিয়ভাবে পরিচালনা করবে, তবে আপনি যদি নির্দিষ্ট ফরম্যাট চয়ন করতে চান, তবে loader কনফিগারেশন ব্যবহার করতে পারেন।
সারাংশ
Next.js এর next/image কম্পোনেন্ট ইমেজ অপটিমাইজেশন এবং রেসপন্সিভ ইমেজ ব্যবস্থাপনার জন্য খুবই কার্যকরী এবং শক্তিশালী টুল। এটি আপনার ইমেজ রিসাইজিং, ফরম্যাট কনভার্সন, ল্যাজি লোডিং এবং অন্যান্য ইমেজ অপটিমাইজেশন কার্যক্রম স্বয়ংক্রিয়ভাবে পরিচালনা করে, যাতে আপনার ওয়েবসাইটের লোডিং টাইম দ্রুত হয় এবং SEO উন্নত হয়।
Read more